package com.gxa.mapper;

import com.gxa.common.R;
import com.gxa.pojo.*;
import org.apache.ibatis.annotations.Param;
import org.springframework.stereotype.Component;

import java.util.List;
import java.util.Map;

/**
 * Created with IntelliJ IDEA.
 * User: zdk
 * Date: 2021/12/03 16:54
 * Description:
 * Version: V1.0
 */
@Component
public interface LsFinanceMapper {

    /**
     * 财务管理查询
     * @param param1  页码
     * @param param2 每页显示条数
     * @return 财务管理信息结果集
     */
    List<Finance> queryFinanceList(Integer param1, Integer param2);
    /**
     * 今日收支列表查询
     * @param param1  页码
     * @param param2 每页显示条数
     * @return 今日财务管理信息结果集
     */
    List<Finance> queryTodayFinanceList(Integer param1, Integer param2);

    /**
     * 今日收支列表记录条数
     * @return
     */
    Integer queryTodayCount();
    /**
     * 本周收支列表查询
     * @param param1  页码
     * @param param2 每页显示条数
     * @return 本周财务管理信息结果集
     */
    List<Finance> queryWeekFinanceList(Integer param1, Integer param2);

    /**
     * 本周收支列表记录条数
     * @return
     */
    Integer queryWeekCount();
    /**
     * 本月收支列表查询
     * @param param1  页码
     * @param param2 每页显示条数
     * @return 本月财务管理信息结果集
     */
    List<Finance> queryMonthFinanceList(Integer param1, Integer param2);

    /**
     * 本月收支列表查询记录条数
     * @return
     */
    Integer queryMonthCount();
    /**
     * 高级搜索查询
     * @param queryExportFinance 高级搜索条件集
     * @return 高级搜索查询结果集
     */
    List<Finance> queryExportFinanceList(QueryExportFinance queryExportFinance);

    /**
     * 列表查询有业务员查询
     *financeListForeach Foreach查询条件结果集
     * @param finance_no_one 主键
     */
    List<Map> queryFinanceListOne(@Param("finance_no_one") List<Integer> finance_no_one);

    /**
     * 列表查询没有业务员查询
     * @param finance_no_two 主键
     * @return
     */
    List<Map> queryFinanceListTwo(@Param("finance_no_two") List<Integer> finance_no_two);

    /**
     * 无财务关联查询
     * @param finance_no_there
     * @return
     */
    List<Map> queryFinanceListThere(List<Integer> finance_no_there);

    /**
     * 查询数据库记录条数
     * @return count
     */
    Integer queryCount();

    /**
     * Rae_Category  结果集查询
     * @param rae_type_no 收入支出类型确认
     * @return Rae_Category 结果集
     */
    List<Rae_Category> queryAddFinanceOne(Integer rae_type_no);

    /**
     * Employee 财务部门结果集查询
     * @return Employee 结果集
     */
    List<Employee> queryAddFinanceTwo();

    /**
     * Capital_Account 结果集查询
     * @return Capital_Account 结果集查询
     */
    List<Capital_Account> queryAddFinanceThere();

    /**
     *Employee 业务员部门结果集查询
     * @return Employee 结果集
     */
    List<Employee> queryAddFinanceFour();

    /**
     * 收支新增
     * @param finance 财务管理信息实体
     * @return 返回值为1时则操作成功
     */
    int addFinance(Finance finance);

    /**
     * 获取新增合同编号 同步到财务合同中间表中
     * @param finance_Contract 财务、合同中间表实体
     */
    void addFinanceContract(Finance_Contract finance_Contract);

    /**
     * 财务、合同管理信息数据同步
     * @param financeContractAggregate (合同信息、财务信息、中间表)实体
     */
    void addFinanceNewContract(FinanceContractAggregate financeContractAggregate);

    /**
     * 获取新增采购编号 同步到财务采购中间表中
     * @param finance_purchase 财务、采购管理中间表实体
     */
    void addFinancePurchase(Finance_Purchase finance_purchase);

    /**
     * 财务、采购管理信息数据同步 新建采购费添加
     * @param financePurchaseAggregste (采购信息、财务信息、中间表)实体
     */
    void addFinanceNewPurchase(FinancePurchaseAggregste financePurchaseAggregste);

    /**
     * 财务、采购管理信息数据同步 交通费添加
     * @param financePurchaseAggregste (采购信息、财务信息、中间表)实体
     */
    void addFinanceNewPurchaseTraffic(FinancePurchaseAggregste financePurchaseAggregste);

    /**
     * 获取新增订单编号 同步到财务订单中间表中
     * @param finance_order 财务、订单管理中间表实体
     */
    void addFinanceOrders(Finance_Orders finance_order);

    /**
     *  财务、订单管理信息数据同步 新建订单费用添加
     * @param financeOrdersAggregate (采购信息、财务信息、中间表)实体
     */
    void addFinanceNewOrders(FinanceOrdersAggregate financeOrdersAggregate);

    /**
     * 添加订单基础信息
     * @param orders 订单信息实体
     * @return 返回结果为1时为成功
     */
    int addOrders(FOrders orders);

    /**
     * 添加合同基础信息
     * @param contract 合同信息实体
     * @return 返回结果为1时为成功
     */
    int addContract(FContract contract);

    /**
     * 采购基础信息
     * @param purchase 采购信息实体
     * @return 返回结果为1时为成功
     */
    int addPurchase(FPurchase purchase);

    /**
     * 修改财务信息状态接口
     * @param finance_no     财务信息主键
     * @param finance_state  财务信息状态
     * @return 返回结果为1时为成功
     */
    int UpdateStateFinance(Integer finance_no, Integer finance_state);

    /**
     * 修改财务信息接口
     * @param finance 需要修改的财务信息
     * @return
     */
    int UpdateFinance(Finance finance);

    /**
     * 普通搜索接口
     * @param param1  页码
     * @param param2 显示条数
     * @param search  搜索条件
     * @return
     */
    List<Finance> querySearchFinance(@Param("currentPage") Integer param1, @Param("currentLimit") Integer param2,@Param("search") String search);

    /**
     * 删除财务信息接口
     * @param finance_no 财务信息主键编码
     * @return
     */
    int updateDeleteFinance(Integer finance_no);

    /**
     * 根据客户信息删除财务信息
     * @param finance_customer 客户信息编号
     * @return
     */
    int updateDeleteCustomerFinance(Integer finance_customer);

    /**
     * 普通搜索结果记录条数
     * @param search
     * @return
     */
    Integer querySearchCount(@Param("search") String search);


}
